<!-- 我们的类型 -->

<template>
  <div class="MaintainPrint-OurType">
    <div v-for="[type, name] in typeDict" :key="type" :class="getTypeClass(type)" @click="MAP.type = type">
      <component :is="CORE.keyPre(type, 'Item')" :item="first[type]" />
      <p>{{ name }}</p>
    </div>
  </div>
</template>

<script>
// ============================== 导入依赖 ============================== //

import CORE from '@/CORE'

// ============================== 导出组件 ============================== //

export default {
  /**
   * 名称定义 (实际使用名称)
   */
  name: 'OurType',

  /**
   * 混入列表 (配置选项合并)
   */
  mixins: [CORE.mixWeb()],

  /**
   * 组件导入 (Abc.vue + Abc/index.vue)
   */
  ...CORE.components(require.context('@print/views/CommonPrint', true, /vue$/)),

  /**
   * 计算属性 (慎用箭头函数)
   */
  computed: {
    /**
     * 首项
     */
    first() {
      const { param: { rowList } } = this
      return rowList[0] || {}
    },

    /**
     * 类型字典
     */
    typeDict() {
      return this.DICT.TYPE
    },
  },

  /**
   * 本地方法 (轻量重要在前)
   */
  methods: {
    /**
     * 获取选中类型
     */
    getTypeClass(type) {
      const name = 'MaintainPrint-OurType'
      return this.MAP.type === type ? `${name}-${type} ${name}-active` : `${name}-${type}`
    },
  },
}
</script>

<style lang="scss">
@import './index.scss';
</style>
